# coding=utf-8
from random import randrange
import pygame

# 初始化游戏
pygame.init()

# 设置窗口大小
screen = pygame.display.set_mode((480, 480))

# 蛇身
snake = [pygame.Rect(10,10, 10, 10)]
screen = pygame.display.set_mode((480, 480))
food = None


# 设置窗口填充色，RGB颜色代码
screen.fill((255, 255, 255))

# 位移坐标
up = (0, -10)
down = (0, 10)
left = (-10, 0)
right = (10, 0)

# 蛇移动的方向
dir = down

# 时钟
clock = pygame.time.Clock()

while True:

    # 时钟延时
    clock.tick(min(5 + (len(snake) / 4), 30))

    # 获取pygame事件
    event = pygame.event.poll()
    # 判断pygame事件类型为游戏退出
    if event.type == pygame.QUIT:
        pygame.quit()
    # 判断pygame事件类型为键盘按下
    if event.type == pygame.KEYDOWN:
        # 上键按下
        if event.key == pygame.K_UP:
            # 改变蛇头方向
            dir = up
        # 下键按下
        if event.key == pygame.K_DOWN:
            dir = down
        # 左键按下
        if event.key == pygame.K_LEFT:
            dir = left
        # 右键按下
        if event.key == pygame.K_RIGHT:
            dir = right
    screen.fill((255,255,255))
    if food is None:
        food = pygame.Rect(randrange(48) * 10, randrange(48) * 10, 10, 10)
    # 画出食物
    pygame.draw.rect(screen, (0, 0, 0), food)
    # 遍历保存蛇身的列表，绘画出蛇
    for rect in snake:
        pygame.draw.rect(screen, (0, 0, 0), rect)

    # 取列表最后一个元素，偏移到dir，得到一个矩形坐标对象，也就是蛇要移动的下一个坐标
    node = snake[-1].move(dir)
    # 将得到的坐标放到蛇列表里面，这样下次循环就会移动
    snake.append(node)
    del snake[0]

    # 更新界面
    pygame.display.flip()
